Блог им. kurd |"Акела промахнулся" или "Мальчик Buybuy" слишком гениален, чтобы кто-то его мог понять?

По следам статей
«Рынок — это просто! Часть 3» 03 июня 2022, 01:12 «ВПК России — лучший»
smart-lab.ru/blog/808353.php
«грааль от BuyBuy» 05 июня 2022, 05:17 «Sergey Pavlov»
smart-lab.ru/blog/808971.php

Резюмируем сжато:
Цена актива в момент t — это x(t), приращение цены — d(t)=x(t)-x(t-1).
Индикатор id(t)=A*d(t-1)+B*d(t-2)
Покупка, когда id(t)>=0, продажа, когда id(t)<0.

Чтобы индикатор работал идеально на 2-х предыдущих барах, д.б.
d(t-1)=A*d(t-2)+B*d(t-3)
d(t-2)=A*d(t-3)+B*d(t-4)

Решение с точностью до множителя существует всегда:
A=d(t-1)*d(t-4)-d(t-2)*d(t-3)
B=d(t-2)*d(t-2)-d(t-1)*d(t-3)

Все это работает на таймфрейме 1 min и ниже.

И добавим однозначности:
Если считать, что d(t) = d(t-0) = x(t-0) — x(t-1),
то d(t-1) = x(t-1) — x(t-2) и т.д.

Скрипт C# на WealthLab
protected override void Execute()	{
    var d1 = (Close >> 1) - (Close >> 2);
    var d2 = (Close >> 2) - (Close >> 3);
    var d3 = (Close >> 3) - (Close >> 4);
    var d4 = (Close >> 4) - (Close >> 5);
    for (int i = 5; i < Bars.Count-2; i++) {
      double A = d1[i]*d4[i] - d2[i]*d3[i];
      double B = d2[i]*d2[i] - d1[i]*d3[i];
      double id = A*d1[i] + B*d2[i];
      int posDir = (! IsLastPositionActive) ? 0
        : LastPosition.PositionType == PositionType.Long ? 1 : -1;  
      if (id >= 0 && posDir != 1) {
        if (posDir == -1)
          ExitAtClose (i, LastPosition);
        BuyAtClose (i);
      } else if (id < 0 && posDir != -1) {
        if (posDir == 1)
          ExitAtClose (i, LastPosition);
        ShortAtClose (i);
      }
    } // for (int i
  } // Execute()
даёт результаты на минутках на 68 днях от 10:00 до 18:44 для сделок без комиссии и проскальзывания

( Читать дальше )

Блог им. kurd |История доходности вложений в биржу с 1995

За начало взял сентябрь 1995, т.к. для индекса РТС Финам не даёт более ранних дат. Но для долгосрочника этот индекс — отстой. Так что его смотреть не будем.
Для сравнения принята цена Close на 31.01.2022.
Начнём с недельных графиков SnP500. Правда, его Финам выдал только с февраля 2001.
На верхнем графике для каждой недели подсчитаны доходности покупки по Open в процентах относительно Close последнего бара. Для последних 365 дней доходность не считается. Последний год на жёлтом фоне. Средняя доходность без поледнего года показана красной горизонталью. На нижнем графике синяя горизонталь показывает Close последнего бара.
История доходности вложений в биржу с 1995
Таблица построена за тот же период.
StrategyName Growth
SANDP-500_010216_220131dayly Weekly
ini     1326.6100
fin     4546.5400
growth     3.4272
bars         1091
years     20.9699
year%      6.0498
mean%     12.3421
nn;HiIdx;HiMax     ; HiDate    ; LoIdx;LoMin     ; LoDate    ;Days ;Drawdown ;Pct>=20
 0;    0;   1326.61; 17.02.2001;    86;    768.63; 11.10.2002;  601;   557.98;  42.06
 1;  344;   1576.03; 13.10.2007;   417;    667.04; 07.03.2009;  511;   908.99;  57.68
 2;  530;   1370.58; 06.05.2011;   552;   1075.09; 07.10.2011;  154;   295.49;  21.56
 3;  915;   2940.91; 21.09.2018;   929;   2346.58; 28.12.2018;   98;   594.33;  20.21
 4;  989;   3393.52; 21.02.2020;   994;   2192.07; 27.03.2020;   35;  1201.45;  35.40
Самая долгая просадка
 0;    0;   1326.61; 17.02.2001;    86;    768.63; 11.10.2002;  601;   557.98;  42.06
Наибольшая абсолютная
 4;  989;   3393.52; 21.02.2020;   994;   2192.07; 27.03.2020;   35;  1201.45;  35.40
Наибольшая относительная
 1;  344;   1576.03; 13.10.2007;   417;    667.04; 07.03.2009;  511;   908.99;  57.68
Результаты по NASDAQ

( Читать дальше )

Блог им. kurd |"Усердие всё превозмогает. Иногда даже рассудок" (Козьма Прутков). О выявлении крупных сделок

В источнике smart-lab.ru/blog/760357.php код QLua и картинка из Quik'а.
Возможно, смысл в том, чтобы отловить сделки крупных игроков. Но склеивание в одну «крупную сделку» всех обезличенных сделок одного направления, пришедших в одну миллисекунду или несколько подряд, вряд ли служит цели. Это заявки разных игроков. Ведь уловка китов, прибегающих к «Айсберг-заявкам», в том и состоит, чтобы расщепить свою крупную заявку во времени.
Так что если кто хочет схватить такого кита за руку, может попробовать выявлять последовательности тиков одного объёма и направления через равные интервалы времени.
Но!
1) Точно ли  все «Айсберг-заявки» формируются равными объёмами и через равные интервалы времени? Это было бы довольно глупо.
2) Даже если такая глупость существует, к любому тику с заявкой кита может прилепиться много заявок мелкоты. Это сильно затруднит выявление регулярных «Айсберг-заявок».
3) Самые киты входят-выходят на рынке не одной «Айсберг-заявкой» и даже не в один день! А то и ещё и через день — по обстановке. Шансов опознать именно их заявки среди прочих — ноль.
4) В самом ли деле так важно знать сделки крупных игроков? Крупняк никогда не проигрывает?

NB Почему эти вопросы не пришли в голову никому из заинтересованных комментаторов?
Включая торговый терминал, не забудьте включить голову.
  • обсудить на форуме:
  • Quik Lua

Блог им. kurd |Какой риск в шорте недельных стрэддлов "30% годовых без рисков". Тестируем на истории 495 недель

Народ последние дни воодушевился открытием Грааля smart-lab.ru/blog/754088.php
Давайте разберёмся. Ставим эксперимент.

У меня в хозяйстве скачана с Финама минутная история 36 квартальных фьючерсов Si с 2013 по 2021 год. Разделяю кварталы на недели с четверга по четверг и в начале каждой недели в 19:01 регистрирую шорт кола и пута на центральном (ближайшем к цене фьючерса) страйке, а в конце этой же недели в 18:44 регистрирую откуп опционов.
Теоретические цены-премии опционов определяю по Блэку-Шоулзу. Волатильность в начале недели принимаю 15%, в конце — 20%. Проскальзывание на шорт принимаю 1% от теорцены. Комиссию на куплю+продажу одного опциона принимаю 8 руб. Это вполне оптимистично.
Логика видна в главном цикле скрипта WealthLab'а.
for (int i = i0; i < weeks.Count; ++i) {
  int idxIni = IndexOf (weeks[i][0]-1, entryTime);
  int idxFin = IndexOf (weeks[i][1], exitTime);
  double strike = mwu.RoundTo (Open[idxIni], strikeStep);
  double dura = (Date[idxFin] - Date[idxIni]).TotalDays;
  double calIni = OptPrice ('C', Open[idxIni], strike, dura, volaIni);
  double putIni = OptPrice ('P', Open[idxIni], strike, dura, volaIni);
  double calFin = OptPrice ('C', Close[idxFin], strike, 1e-6, volaFin);
  double putFin = OptPrice ('P', Close[idxFin], strike, 1e-6, volaFin);
  double win = (calIni+putIni) * (1-slpg) - (calFin+putFin) - 2*fee;
  PrintDebug (String.Format (fmt, i, Date[idxFin].ToShortDateString()
    ,calIni, putIni, calFin, putFin, win));
} // for (int i = i0
Вот выдача за первый квартал

( Читать дальше )

Блог им. kurd |Правда ли что биржа США так хороша? Оценка в рублях за 24 года

Залезаем на Финам и скачиваем историю индекса Дау-Джонса тикер D&J-IND
www.finam.ru/profile/mirovye-indeksy/d-j-ind/export/?market=6&em=91&token=&code=DJI&apply=0&df=13&mf=8&yf=2021&from=13.09.2021&dt=13&mt=8&yt=2021&to=13.09.2021&p=7&f=DJI_210913_210913&e=.txt&cn=DJI&dtf=1&tmf=1&MSOR=1&mstime=on&mstimever=1&sep=1&sep2=1&datf=1&at=1
Рост от 7651 до 35516.6 — в 4.697 раза.

Затем скачиваем «Курс рубля. USDRUB курс ЦБ» тикер USDCB
www.finam.ru/profile/kurs-rublya/usd-from-cb/export/?market=41&em=82485&token=03AGdBq26IJk6CztMjcUSh-HSEeCSnKqkyT4jKDa6_TRojZmdiXBAWUFTnHAjf8IoYvsI9W7MBFa2OzcIS9In75k55ReIhxIdMMWP4JNHDi1Io4Ry7qY0F4ZUO9H62M-P3dA_P0Noo2Zyx14Gq9uLNKVBye6PEbGMi9nTdOVnQLLdikrqG0YiS8ywMR6__e0Isc5QyyxOfni7PGoqibw4o1QLNDV-DxbQrN9ZN-qswsG5U5-wSlKYLlI96ZkPKU7ZbHi92dV9pw5CEaQIqJaYP2NlhMmXtwiUpVkXFcSrI_3DS_TxZwovaitoqSCo-K_7wXhpFwj-mM4tDcFJH6ld0rHV6QoCbVZZv_nRVYpEEN3t34by4IPO3LoWBoACzBlLUTxN99HLEL6K5eegZNdJ3yVztZmFLzxKIi9Tm9UD6W3-7QVDQGFMK1kXrfHJRQeul6omvIQm9TR-B&code=USDCB&apply=0&df=1&mf=8&yf=1997&from=01.09.1997&dt=13&mt=7&yt=2021&to=13.08.2021&p=8&f=USDCB_970901_210813&e=.csv&cn=USDCB&dtf=1&tmf=1&MSOR=0&mstime=on&mstimever=1&sep=3&sep2=1&datf=1&at=1
Рост от 5.832 (деноминировано) до 73.47 руб/длр — в 12.60 раза.
Перемножаем и получаем рост Дау-Джонса в рублях за 24 года в 58.19 раза.

Мой Quik показывает индекс ММВБ IMOEX на недельном тайм-фрейме от 100 в начале сентября 1997 до 3856.76 на 15.09.2021 — в 38.57 раза.

( Читать дальше )
  • обсудить на форуме:
  • QUIK

Блог им. kurd |Нужны ли тиковые данные для тестирования торговой стратегии?

Из общих соображений максимальной реалистичности тестирования ответ должен быть положительный. Но есть несколько «но».
Первое. Я не знаю примеров торговых стратегий на тиках. Только на свечах-барах — от минуток до дневок. Поэтому, сгрузив с qscalp.ru тики фьючерса на индекс РТС, я конвертировал их в секундные бары. И получил потрясающую доходность на простейшем алгоритме. Лонг по Close каждой чёрной свечи и шорт по Close каждой белой свечи. Увы, этот выигрыш виден только при нулевой комиссии. С комиссией выигрыш превращается в проигрыш.
Так что реагировать на движение цены не то что на тиках, но на секундах — пустой номер.

Второе. Если кто-то  для большей реалистичности захочет тестировать торговую стратегию не по ценам сделок, но по ценам очереди заявок, он может сгрузить эти тиковые данные с qscalp.ru
Но для ликвидных бумаг вроде фьючерса на индекс РТС это будет ловлей блох, т.к. спред очереди заявок таких бумаг равен шагу цены. Т.е. учесть этот спред можно, задав величину проскальзывания сделки.

( Читать дальше )

Блог им. kurd |Индикатор Загзаг для Quik'а - лучший демонстратор тренда (и волн Эллиота). Даром

Всем известен старинный индикатор Пробоя. Этот индикатор для Quik'а найдёте на smart-lab.ru/blog/704033.php
Когда-то по нему торговали, покупая на пробое вверх максимума предыдущих N баров и продавая на пробое минимума. Похоже, сегодня эта стратегия вышла из моды.

Возможен другой подход к отслеживанию экстремумов. Регистрировать пробой не на фиксированном числе баров (по ширине графика), но на фиксированном уходе цены от предыдущего экстремума (по высоте графика). Это столь же известный индикатор Зигзаг. Минимальный уход цены от предыдущего экстремума — размах зигзага, необходимый для смены тренда, я именую силой тренда.

Мало кто пытался строить торговую стратегию на основе Зигзага. Самое ходовое возражение против Зигзага — он не предсказывает тренд. Абсурд. Никто и ничто не предсказывает будущего!
Более того. Зигзаг даёт самое объективное и наглядное представление о чередовании трендов заданной силы.

Я некоторое время назад уже предлагал вниманию публики индикатор зигзага для

( Читать дальше )

Блог им. kurd |Добавим Фьючерс ММВБ на золото. Двойной Грааль для терпил. Исправленный

Это дополнение «Снова Фьючерс на индекс ММВБ. Грааль для терпил» smart-lab.ru/blog/699619.php
На этот раз гоняем историю фьючерса GOLD. Но для сопоставимости с MXI сразу конвертируем доллары в рубли по курсам на каждый день торгов.
Игнорируем, что фьючерс на золото торгуется в контанго. Не суть! Используем почти тот же алгоритм, что в предыдущей статье, на те же 73 квартала с марта 2003.
Изменение в том, что WealthLab заглючил на истории золота и в одном баре не закрывает позицию по заданной цене. Пришлось делать роллирование по цене открытия дня, следующего за экспирацией.
Оптимизированные параметры: триггер скользящего стопа 25%, реверс 5%, убыток 10%.
Выигрыш 120788.33 руб. Просадка 30820.10 руб на 08.03.2021. От максимума цены позиции 154559 руб на 06.08.2020 это 19.94%.


Теперь для подсчёта прибыльности я беру не конечную цену актива, но среднюю за все дни, равную 52641.90 руб.

Связанные средства: ГО + резерв = 9306.61 * 1.25 = 11633.26 руб; Вариационка = 52641.90 * 0.25 = 13160.48 руб.
Итого: 24793.73 руб. округлим до 25000 руб.
При среднем выигрыше за квартал 1654.63 руб это даёт квартальную прибыльность 6.62%. На год в среднем 26.47%.
Следует отметить 6 проигрышных подряд кварталов 2012-2013 и ещё 5 случаев по 2 проигрыша подряд. Учитывая, что ФРС уже почти израсходовала свой боезапас, вряд ли возможно повторение 2012 года.



( Читать дальше )

Блог им. kurd |Снова Фьючерс на индекс ММВБ. Грааль для терпил

Это дополнение к «Фьючерс на индекс ММВБ. Математические ожидания и реальная ретроспекция» smart-lab.ru/blog/699584.php
Т.к. фьючерс на индекс ММВБ торгуется в бэквордации, его историю можно заменить более длинной историей самого индекса, если: 1) умножить индекс на 10 и 2) роллировать позицию в дни экспирации по цене (Open+Close)/2.
И тогда можно представить, как можно было, играя в MXI (малый фьючерс), пережить и 2008, и 2020 годы.
Подробности алгоритма в предыдущей статье. Последний тест на 73 кварталах от марта 2003 дал для фьючерса MXI выигрыш 50549.20 руб. Наибольшая просадка выигрыша 10923.10 руб на 18.03.2020 от максимума 44498.90 руб 20.01.2020 с объёмом позиции 32268.90 руб (33.85% от объёма).
В 2008 просадка скромнее, Но относительном объёма позиции примерно та же.

Средний выигрыш на квартал 692.50 руб. Относительно связанных средств 15000 руб (завышенная оценка) это даёт квартальную прибыльность 4.62% или 18.47% годовых.
Стоп-лосс сработал только однажды, 06.08.2008. Скользящий стоп фиксировал прибыль 15 раз. Оптимизированные параметры: триггер скользящего стопа 20%, реверс 0%. Убыток 25% на квартал я назначил из психологических соображений.
Следует также отметить три проигрышных подряд квартала в 2011. И ещё два случая по два проигрышных квартала подряд.
На графике показан выигрыш индекса ММВБ, не умноженный на 10

Снова Фьючерс на индекс ММВБ. Грааль для терпил

Плоские участки в 2008 показывают досрочные закрытия позиции.
Игра в купи и держи даёт выигрыш 39501.70 руб с просадкой 13610.70 руб.


....все тэги
UPDONW
Новый дизайн